﻿using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using BoletoNet;
using ProcessoSeletivo.DAO;

public partial class BoletoPage : System.Web.UI.Page
{
    #region " Load "

    protected void Page_Load(object sender, EventArgs e)
    {
        if (Session["cod_inscricao_ins"] == null)
        {
            Response.Redirect("default.aspx");
        }
        else
        {
            GerarBoleto();
        }
    }

    #endregion

    #region " GerarBoleto "

    private void GerarBoleto()
    {
        DataSet lDataSet;
        int cod_inscricao_ins = Convert.ToInt32(Session["cod_inscricao_ins"]);
        string inscricao = "";

        inscricao = inscricao.PadRight(9 - cod_inscricao_ins.ToString().Length, '0') + cod_inscricao_ins.ToString();

        DataView lDataView;

        using (InscricaoCandidato objIns = new InscricaoCandidato())
        {
            lDataView = objIns.ConsultarInscricaoCompleta(cod_inscricao_ins);
        }

        if (lDataView.Table.Rows.Count > 0)
        {
            DateTime vencimento = DateTime.Now.AddDays(3);
            /*
            if (DateTime.Now > Convert.ToDateTime("25/05/2012"))
            {
                vencimento = Convert.ToDateTime("28/05/2012");
            }
            */
            Cedente c = new Cedente("33.164.450/0007-64", "Faculdade Social da Bahia", "0830", "5229120");

            c.Codigo = 5229120;

            Boleto b = new Boleto(vencimento, 30.00, "102", "333" + inscricao, c);
            
            //NOSSO NÚMERO
            //############################################################################################################################
            //Número adotado e controlado pelo Cliente, para identificar o título de cobrança.
            //Informação utilizada pelos Bancos para referenciar a identificação do documento objeto de cobrança.
            //Poderá conter número da duplicata, no caso de cobrança de duplicatas, número de apólice, no caso de cobrança de seguros, etc.
            //Esse campo é devolvido no arquivo retorno.
            b.NumeroDocumento = inscricao + "03/2012";

            b.Sacado = new Sacado("", lDataView.Table.Rows[0]["nom_candidato_can"].ToString());
            //b.Sacado = new Sacado(lDataView.Table.Rows[0]["num_cpf_can"].ToString(), lDataView.Table.Rows[0]["nome"].ToString());
            //b.Sacado.Endereco.End = lDataView.Table.Rows[0]["des_logradouro_end"].ToString();
            b.Sacado.Endereco.Bairro = lDataView.Table.Rows[0]["des_bairro_end"].ToString();
            b.Sacado.Endereco.Cidade = lDataView.Table.Rows[0]["des_cidade_cid"].ToString();
            b.Sacado.Endereco.CEP = lDataView.Table.Rows[0]["num_cep_end"].ToString();
            b.Sacado.Endereco.UF = lDataView.Table.Rows[0]["nom_uf_est"].ToString();

            //Espécie Documento - [R] Recibo
            b.EspecieDocumento = new EspecieDocumento_Santander(2);

            Instrucao_Santander item = new Instrucao_Santander(33);
            
            //item.Descricao = "O valor pago por esse boleto será abatido no valor da matrícula.";
            //b.Instrucoes.Add(item);

            Instrucao_Santander item2 = new Instrucao_Santander(33);
            item2.Descricao = "Não receber esse boleto após " + vencimento.ToString("dd/MM/yyyy");
            b.Instrucoes.Add(item2);
            /*
            if (vencimento > Convert.ToDateTime("28/05/2012"))
            {
                Instrucao_Santander item3 = new Instrucao_Santander(33);
                item3.Descricao = "Após 28/05/2012 o boleto só poderá ser pago na instituição";
                b.Instrucoes.Add(item3);
            }
            */
            boletoBancario.Boleto = b;
            boletoBancario.MostrarCodigoCarteira = true;
            boletoBancario.Boleto.Valida();

            boletoBancario.MostrarComprovanteEntrega = (Request.Url.Query == "?show");

            using (GeraBoleto objBoleto = new GeraBoleto())
            {
                lDataSet = objBoleto.ConsultarBoleto(-1).Table.DataSet;
                lDataSet.Tables[0].Rows.Add(lDataSet.Tables[0].NewRow());

                lDataSet.Tables[0].Rows[0]["cod_inscricao_ins"] = cod_inscricao_ins;
                lDataSet.Tables[0].Rows[0]["val_boleto_bol"] = 30;
                lDataSet.Tables[0].Rows[0]["dat_vencimento_bol"] = vencimento;
                lDataSet.Tables[0].Rows[0]["num_nosso_numero_bol"] = b.NossoNumero;
                lDataSet.Tables[0].Rows[0]["flg_pago_bol"] = 0;
                
                objBoleto.IncluirBoleto(lDataSet);
            }
        }
        else
        {
            Response.Redirect("default.aspx");
        }
    }

    #endregion
}